iT邦幫忙

2025 iThome 鐵人賽

DAY 6
0
自我挑戰組

leetcode解題學習java系列 第 6

30天LeetCode挑戰紀錄-DAY6. Maximum Subarray

  • 分享至 

  • xImage
  •  

題目

https://ithelp.ithome.com.tw/upload/images/20250920/20178158p7HlXDGdrL.png
這個它說給我們一個整數陣列,然後我要在這個裡面取一個陣列出來,這個陣列的條件是,它要是整數陣列裡總和最大的,接著要把它加總起來回傳它的和。

想法

這題我卡了很久,我想到的是要把nums[0]往後一個一個加到nums[n],然後只要遇到比較大的就存入答案,然後再換nums[1]當第一個數在往後一個一個加,過程中有更大的就存入,接著以此類推這樣。
結果。Time Limit Exceeded
https://ithelp.ithome.com.tw/upload/images/20250920/20178158DjxuZo36yn.png

所以我又去找gpt幫忙
https://ithelp.ithome.com.tw/upload/images/20250920/201781584lu7V335Iq.png
所以只要他加起來小於0就是我們不要的,然後用max(,)來幫我們取最大的數解決了我前面雙迴圈的問題。

程式碼

class Solution {
    public int maxSubArray(int[] nums) {
        int maxSum = Integer.MIN_VALUE; //設最大為最小整數,這樣第一個開始才有辦法比較
        int currentSum = 0;

        for(int i=0;i<nums.length; i++){
            currentSum += nums[i];
            if(currentSum>maxSum){
                maxSum = currentSum;
            }
            if(currentSum<0){
                currentSum = 0;
            }
        }
    return maxSum;
    }
}

執行成功!
https://ithelp.ithome.com.tw/upload/images/20250920/20178158tePvrZ7tyE.png


上一篇
30天LeetCode挑戰紀錄-DAY5. Product of Array Except Self
下一篇
30天LeetCode挑戰紀錄-DAY7. Merge Intervals
系列文
leetcode解題學習java16
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言